/* ======================================================================
  全局日期间隔校验
 ======================================================================*/
// =============================================== 全局日期转换 ==================
// 使用规则：let dataStamp = new Date(dataStamp).Format("yyyy-MM-dd hh:mm");
// (function dateParse() {
//   Date.prototype.Format = function (fmt) {
//     var o = {
//       'M+': this.getMonth() + 1, // 月份
//       'd+': this.getDate(), // 日
//       'h+': this.getHours(), // 小时
//       'm+': this.getMinutes(), // 分
//       's+': this.getSeconds(), // 秒
//       'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
//       'S': this.getMilliseconds() // 毫秒
//     }
//     if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
//     for (var k in o) { if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) }
//     return fmt
//   }
// })()
// =============================================== 时间选择限制 ==================
// @parems startdate,enddate 类型:Date(yyyy-MM-dd hh:mm:ss)
// @parems options type:String/Object
// #options String['Y'] 时间区间不超过1年
// #options String['M'] 时间区间不超过1月
// #options String['W'] 时间区间不超过1周
// #options String['D'] 时间区间不超过1日
// #options Array[Number(n),String("Y")] 时间区间不超过n年.....以此类推
import { Message } from 'element-ui';
const datePikerLimit = function (startdate, enddate, options) {
  const beginStamp = new Date(startdate).getTime();
  const endStamp = new Date(enddate).getTime();

  if ((!beginStamp && endStamp) || (beginStamp && !endStamp)) {
    return 1;
  } else if (!beginStamp || !endStamp) {
    return 2;
  };
  if (beginStamp > endStamp) {
    Message({
      message: '注意！开始时间不能大于结束时间',
      type: 'warning'
    });
    return false;
  };
  let dateFuncName, msgStr, arr;
  let flag = true;
  if (typeof options === 'undefined') {
    return true;
  }
  if (typeof `options` === 'string') {
    arr = [1, options];
  } else {
    if (typeof options[1] !== 'string' || typeof options[0] !== 'number') {
      Message({
        message: 'datePikerLimit入参错误',
        type: 'warning'
      });
      flag = false;
    };
    arr = options;
  };
  arr[1] = arr[1].toUpperCase();
  switch (arr[1]) {
    case 'Y':
      dateFuncName = 'FullYear';
      msgStr = `${arr[0]}年`;
      break;
    case 'M':
      dateFuncName = 'Month';
      msgStr = `${arr[0]}个月`;
      break;
    case 'W':
      dateFuncName = 'Date';
      msgStr = `${arr[0]}周`;
      arr[0] = arr[0] * 7;
      break;
    case 'D':
      dateFuncName = 'Date';
      msgStr = `${arr[0]}天`;
      break;
    default:
      Message({
        message: 'datePikerLimit入参错误',
        type: 'warning'
      });
      flag = false;
  };
  if (!flag) return false;
  //   let dateFuncName = "FullYear"
  //   console.log(new Date()[`set${dateFuncName}`](new Date()[`get${dateFuncName}`]() + 1));
  // new Date().setMonth(new Date().getMonth() + 1)
  const standardEndDateStamp = new Date(startdate)[`set${dateFuncName}`](new Date(startdate)[`get${dateFuncName}`]() + arr[0]); // 标准结束时间戳
  const isEffective = endStamp <= standardEndDateStamp; // 是有效的时间区间(布尔类型)
  if (!isEffective) {
    Message({
      message: '注意！时间跨度不能大于' + msgStr,
      type: 'warning'
    });
    return false;
  }
  return true;
};

export {
  datePikerLimit
};
